<template>
    <el-menu default-active="1-4-1" class="el-menu-vertical-demo" @open="handleOpen" @close="handleClose" :collapse="isCollapse" background-color="#545c64"
      text-color="#fff"
      active-text-color="#ffd04b">

      <!-- 
      {{ isCollapse ? '后台':'通用后台管理系统' }}
      展开就是显示通用后台管理系统
      不展开就是显示后台
      -->
      <h3>{{ isCollapse ? '后台':'通用后台管理系统' }}</h3>
      <!-- @click="clickMenu(item)"这个有返回一个数据 -->
      <el-menu-item @click="clickMenu(item)" v-for="item in noChildren" :key="item.name" :index="item.name">
      <i :class="`el-icon-${item.icon}`"></i>
      <span slot="title">{{ item.label }}</span>
      </el-menu-item>
      <el-submenu v-for="item in hasChildren" :key="item.label" :index="item.label">
      <template slot="title">
        <i :class="`el-icon-${item.icon}`"></i>
        <span slot="title">{{item.label}}</span>
      </template>
      <el-menu-item-group v-for="subItem in item.children" :key="subItem.path">
        <el-menu-item @click="clickMenu(subItem)" :index="subItem.path">{{ subItem.label }}</el-menu-item>
      </el-menu-item-group>
    </el-submenu>
    
  </el-menu>
</template>

<!-- scope增加了这个属性那么这个里面的属性只会作用于这个界面 -->
<style lang="less" scope>
    .el-menu-vertical-demo:not(.el-menu--collapse) {
      width: 200px;
      min-height: 400px;
    }
    .el-menu{
      height:100vh;
      h3 {
        color: #fff;
        text-align:center;
        line-height:48px;
        font-size:16px;
        font-weight:400px;
      }
    }
  </style>
  
  <script>
  import Cookie from 'js-cookie';
    export default {
      data() {
        return {}
                  },
      // 方法都放在这个下面
      methods: {
        handleOpen(key, keyPath) {
          console.log(key, keyPath);
        },
        handleClose(key, keyPath) {
          console.log(key, keyPath);
        },
        // 点击菜单
        clickMenu(item) {
          // console.log(item)
          // 调用router.path进行调用
          //this.$route这个表示当前页面的路由
          //this.$route.path获取当前路由的路径
          if(this.$route.path !== item.path && !(this.$route.path === '/home' && (item.path === '/'))){
            this.$router.push(item.path)
          }
          
          this.$store.commit('selectMenu', item)
        }
      },
      computed:{
        //判断没有子菜单
        noChildren() {
          return this.menuData.filter(item => !item.children)
        },
        
        //判断有子菜单
        hasChildren() {
          return this.menuData.filter(item => item.children)
        },
        menuData(){
          // 判断当前数据,如果缓存中没有,当前store中去获取
          return JSON.parse(Cookie.get('menu')) || this.$store.state.tab.menu
        },
        isCollapse(){
          // 直接调用state文件下的tab，tab文件下的isCollapse
          return this.$store.state.tab.isCollapse;
        }
      }
    }
</script>

<style lang="less" scoped>
.el-menu {
  border-right: none;
}
</style>
